<?php
/*
===============================================================================
	Controla las funciones nesesarias para que el catalogo de maestros pueda
	consultar, insertar , modificar y eliminar registros.
===============================================================================
 */
class Maestros extends CI_Controller
{
	const TITULO = 'Maestros';
	/*
	====================
	Index

	Hay dos rutas en esta funcion.
		1ra.- Llamada a busqueda avanzada
		2da.- Cargar todos los maestros
	Si el 3er segmento del uri es busqAvanzada, significa que esta funcion fue llamada
	con esta intencion; por lo tanto realiza la busqueda especificada y carga el resultado.
	En el caso que no sea busqAvanzada carga todos los registros de maestros.
	Establece la configuracion de paginacion dependiendo de cual de las 2 rutas tome.
	====================
	*/
	function Index()
	{
		$datos['contenido'] 	 = 'Maestros_View';
		$datos['titulo']         = self::TITULO;
		$datos['registros']      = $this->Maestros_Model->ObtenerTodos();
		//Config Paginacion
		$config['total_rows'] 	 = $this->Maestros_Model->ContarRegistros();
		$config['base_url'] 	 = site_url("Maestros/Index");
		$config['per_page'] 	 = 20;
		$config['num_links'] 	 = 5;
		$this->pagination->initialize( $config );
		$this->load->view( '/includes/template' , $datos );
	}

	function BuscarMaestro()
	{
		$datos['contenido'] = 'Maestros_View';
		$datos['titulo']    = self::TITULO;
		$tipo 	= $this->input->post('tipoBusqueda');
		$texto  = $this->input->post('filtro');
		if ( $tipo != '' && $texto != '' ) {
			switch ($tipo) {
				case 'matricula':
					$datos['registros'] = $this->Maestros_Model->BuscarPorMatricula($texto);
					break;
				case 'maestro':
					$datos['registros'] = $this->Maestros_Model->BuscarPorMaestro($texto);
					break;
				default:
					break;
			}
			//Config Paginacion
			$config['total_rows'] 	 = COUNT($datos['registros']);
			$config['base_url'] 	 = site_url("Maestros/Index");
			$config['per_page'] 	 = 20;
			$config['num_links'] 	 = 5;
			$this->pagination->initialize( $config );
			$this->load->view( '/includes/template' , $datos );
		} else {
			$this->session->set_flashdata('aviso','FALSE');
			$this->session->set_flashdata('avisoText','Ambos campos de busqueda son requeridos(tipoBusqueda/Texto)');
			redirect('Maestros');
		}
	}

	/*
	====================
	AgregarMaestro

	Captura los valores introducidos en el formulario, y forma un arreglo con los valores.
	Este se manda a guardar, se establece un aviso al usuario dependiendo de la respuesta.
	(Exito / Error)
	====================
	*/
	function AgregarMaestro()
	{
		$datosMaestro = array(
				'id'        => $this->input->post('matricula'),
				'nombre'    => strtoupper(utf8_encode($this->input->post('maestro')))
				);
		$exitoso = $this->Maestros_Model->AgregarRegistrosMaestros($datosMaestro);
		if ( $exitoso ) {
			$this->session->set_flashdata('aviso','TRUE');
			$this->session->set_flashdata('avisoText','Registro Agregado');
		}else{
			$this->session->set_flashdata('aviso','FALSE');
			$this->session->set_flashdata('avisoText','Favor de intentar de nuevo, verifique la matricula del docente');
		}
		redirect('Maestros');
	}

	/*
	====================
	ActualizarMaestro

	Toma los 2 parametros nesesarios, verfica que contengan algun valor,
	convierte el nombre de maestro a mayusculas y manda a actualizar.
	Establece una aviso, si es exitoso.
	====================
	*/
	function ActualizarMaestro()
	{
		$matricula  = $this->input->post('matricula');
		$maestro    = $this->input->post('maestro');
		if ( $maestro != "" && isset($matricula)) {
			$res = $this->Maestros_Model->ActualizarRegistroMaestro( $matricula , strtoupper(utf8_encode($maestro)) );
			if ( $res == 1 ) {
				$this->session->set_flashdata('aviso', 'TRUE');
				$this->session->set_flashdata('avisoText', 'Se ha actualizado el registro.');
				redirect('Maestros');
			} else {
				$this->session->set_flashdata('aviso', 'FALSE');
				$this->session->set_flashdata('avisoText', 'Favor de intentar de nuevo.');
				redirect('Maestros');
			}
		} else {
			$this->session->set_flashdata('aviso', 'FALSE');
			$this->session->set_flashdata('avisoText', 'El nombre de docente es requerido al momento de actualizar.');
			redirect('Maestros');
		}
	}

	/*
	====================
	EliminarMaestro

	Toma el tercer segmento del uri, debido a que la imagen direcciona y manda la matricula por GET.
	Ejemplo http://example.com/index.php/primer/segundo/tercer/
	Con la matricula como identificador, manda el registro ese a eliminar de la BD.
	====================
	*/
	function EliminarMaestro()
	{
		$matricula = $this->uri->segment(3);
		$res = $this->Maestros_Model->EliminarRegistro($matricula);
		if( $res == 1 ){
			$this->session->set_flashdata('aviso', 'TRUE');
			$this->session->set_flashdata('avisoText', 'Registro ha sido eliminado.');
		}else{
			$this->session->set_flashdata('aviso', 'FALSE');
			$this->session->set_flashdata('avisoText', 'Favor de intentar de nuevo');
		}
		redirect('Maestros');
	}
}
 ?>